/*
 * UsuarioFacadeEJBBean.java
 *
 * Created on 2 de Julho de 2007, 10:51
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package br.unifor.finance.business.facade;

import br.unifor.finance.common.business.entity.Usuario;
import java.util.List;
import java.util.Map;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import javax.security.auth.spi.LoginModule;

/**
 *
 * @author Cleilson
 */
@Stateless
public class UsuarioFacadeEJBBean implements UsuarioFacadeEJBLocal, UsuarioFacadeEJBRemote {

  @PersistenceContext(unitName = "finance-ejbPU-jboss")
  private EntityManager em;
  
  /**
   * Creates a new instance of UsuarioFacadeEJBBean
   */
  public UsuarioFacadeEJBBean() {
  }

  public void insert(Usuario usuario) {
    em.persist(usuario);
  }

  public void udpate(Usuario usuario) {
    em.merge(usuario);
  }

  public void delete(Usuario usuario) {
    em.merge(usuario);
    em.remove(usuario);
  }

  public Usuario findByID(Integer id) {
    return (Usuario) em.find(Usuario.class, id);
  }
  
  public List<Usuario> findByNamedQuery(String namedQuery, Map<String, Object> params) {
    Query qry = em.createNamedQuery(namedQuery);
    
    for (String paramName : params.keySet())
      qry.setParameter(paramName, params.get(paramName));
    
    return qry.getResultList();
  }
    
  public List<Usuario> findAll() {
    return em.createQuery("select object(o) from Usuario as o").getResultList();
  }
  
  public Usuario login(String login, String password) {
    Query qry = em.createQuery("select object(o) from Usuario as o where o.login = :login and o.senha = :password");
    
    qry.setParameter("login", login);
    qry.setParameter("password", password);
    
    Usuario result = (Usuario)qry.getSingleResult();
    
    return result;
  }

}
